import { constantRoutes, asyncRoutes } from '@/router'
const state = {
  // 之前的遍历默认路由配置生成菜单已经不够用了
  // 这里我们希望另外创建变量管理应该生成菜单的路由配置
  routes: []
}

const mutations = {
  setRoutes(state, data) {
    // 静动态路由合并
    state.routes = [
      // 这里应该是权限路由过滤后被调用
      // 用来组合菜单配置
      // 菜单配置包括两部分
      // 1. 默认静态路由 constantRoutes
      // 2. 筛选后权限动态路由 data
      ...constantRoutes,
      ...data
    ]
  }
}

const actions = {
  filterRouter(store, data) {
    //   这里可以接受到调用时传入的菜单权限标识数值
    console.log('执行了筛选路由 actions')
    console.log('得到了用户权限列表')
    console.log(data)
    // 只需要加上动态路由数组，对比筛选即可
    console.log('导入了所有动态路由配置')
    console.log(asyncRoutes)
    // 过滤路由，如果名字在用户权限数组中，可以继续存在，否则抛弃
    const routes = asyncRoutes.filter(route => data.includes(route.name))
    console.log('筛选后的结果')
    console.log(routes)
    // 调用 mutations 利用路由配置合并菜单选项
    store.commit('setRoutes', routes)
    // 这是一个 action 可以执行异步
    // 默认情况下，会返回一个 promise
    // 这里返回的数据，可以被调用时的 await 或者 .then(res) 进行接收
    return routes
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
